package com.offics.loan.domain.repository;

import com.offics.loan.domain.entity.UserInfo;

import java.util.Optional;

/**
 * 用户信息仓储接口
 */
public interface UserInfoRepository {

    /**
     * 根据ID查询用户信息
     *
     * @param id 用户信息ID
     * @return 用户信息
     */
    Optional<UserInfo> findById(Long id);

    /**
     * 根据用户ID查询用户信息
     *
     * @param userId 用户ID
     * @return 用户信息
     */
    Optional<UserInfo> findByUserId(Long userId);

    /**
     * 保存用户信息
     *
     * @param userInfo 用户信息
     * @return 是否成功
     */
    boolean save(UserInfo userInfo);

    /**
     * 保存用户信息并返回保存后的用户信息
     *
     * @param userInfo 用户信息
     * @return 保存后的用户信息
     */
    UserInfo saveAndReturn(UserInfo userInfo);

    /**
     * 更新用户信息
     *
     * @param userInfo 用户信息
     * @return 是否成功
     */
    boolean update(UserInfo userInfo);

    /**
     * 删除用户信息
     *
     * @param id 用户信息ID
     * @return 是否成功
     */
    boolean deleteById(Long id);

    /**
     * 根据用户ID删除用户信息
     *
     * @param userId 用户ID
     * @return 是否成功
     */
    boolean deleteByUserId(Long userId);
}
